package shuishijie.suishijie.model;

import android.text.TextUtils;
import android.util.SparseArray;



import java.util.List;

import shuishijie.suishijie.util.AppUtil;

/**
 * Created by mindx on 2017/9/3.
 */

public class GloblaData {
    private static int wechartPay;
    private static CouponInfo selectedCoupon = null;
    private static List<String> emojiList;

    public static int getFreeShipping() {
        return freeShipping;
    }

    public static void setFreeShipping(int freeShipping) {
        GloblaData.freeShipping = freeShipping;
    }

    static int freeShipping = 99;
    static long timeOffset = 0;

    public static long getCurrentTime() {
        return System.currentTimeMillis() + timeOffset;
    }

    /**
     * 0:平台余额 1：支付宝 2：微信
     */
    private static final SparseArray<String> payState = new SparseArray<>(5);

    static {
        payState.put(3, "平台余额");
        payState.put(1, "支付宝");
        payState.put(2, "微信");
        payState.put(4, "银联");
    }

    public static String getPayType(String status) {
        String s = payState.get(AppUtil.parseInt(status));
        if(TextUtils.isEmpty(s)) {
            s = "其他";
        }
        return s;
    }

    private static final SparseArray<String> strStatus = new SparseArray<>(5);

    static {
        strStatus.put(-1, "已关闭");
        strStatus.put(-2, "已结束");
        strStatus.put(0, "已开抢");
        strStatus.put(1, "预热中");  // 未开始
        strStatus.put(2, "抢购中");
    }

    public static int getCurrentStatus(String beginTime, String endTime, String prevTime, String nextTime, int status) {
        int ret = status;
        if (status >= 0) {
            long prev = TextUtils.isEmpty(prevTime) ? 0L : AppUtil.parserDate(prevTime).getTime();
            long next = TextUtils.isEmpty(nextTime) ? Long.MAX_VALUE : AppUtil.parserDate(nextTime).getTime();
            long begin = AppUtil.parserDate(beginTime).getTime();
            long end = TextUtils.isEmpty(endTime) ? Long.MAX_VALUE : AppUtil.parserDate(endTime).getTime();
            if (begin < getCurrentTime()) {
                ret = 0;
                if (next > getCurrentTime()) {
                    ret = 2;
                }

                if (end < getCurrentTime()) {
                    ret = -2;
                }
            } else {
                ret = 1;
            }
        }

        return ret;
    }

    public static String getHotTimeStatus(String beginTime, String endTime, int status) {
        String ret = "";
        long begin = AppUtil.parserDate(beginTime).getTime();
        long end = AppUtil.isEmpty(endTime) ? Long.MAX_VALUE : AppUtil.parserDate(endTime).getTime();
        if (status < 0 || status == 2) {
            ret = strStatus.get(status);
        } else {
            if (begin < System.currentTimeMillis()) {
                if (end < getCurrentTime()) {
                    ret = "已结束";
                } else {
                    ret = "已开抢";
                }
            } else {
                ret = "预热中";
            }
        }
        return ret;
    }


    public final static SparseArray<String> status = new SparseArray<>(16);

    public static String getOrderStatus(int s) {
        return status.get(s);
    }

    static {
        status.append(0, "已取消");
        status.append(10, "待付款");
        status.append(15, "线下支付待审核");
        status.append(16, "货到付款待发货");
        status.append(20, "待发货");
        status.append(30, "已发货");
        status.append(40, "已收货");
        status.append(45, "买家申请退货");
        status.append(46, "卖家同意退货");
        status.append(47, "已退货");
        status.append(48, "拒绝退货");
        status.append(50, "已完成");
        status.append(60, "已结束");
        status.append(65, "买家申请退款");
        status.append(66, "卖家同意退款");
        status.append(67, "已退款");
        status.append(68, "拒绝退款");
    }
//
    /**
     * 待付款-立即支付，订单详情，取消订单
     * 待发货（卖）-联系买家，订单详情
     * 待发货（买）-查看物流，订单详情
     * 待收货（卖）-联系买家，订单详情
     * 待收货（买）-查看物流，订单详情
     * 已取消-订单详情，删除订单
     *
     * @param status
     * @return
     */
    /**
     * 订单：
     * 0 --状态：已取消         按钮：订单详情，删除订单
     * 10--状态：待付款         按钮：立即支付，订单详情，取消订单
     * 20--状态：待发货（买）   按钮：查看物流，订单详情
     * 20--状态：待发货（卖）   按钮：联系买家，订单详情
     * 30--状态：待收货（买）   按钮：查看物流，订单详情
     * 30--状态：待收货（卖）   按钮：联系买家，订单详情
     * 50--状态：已完成（买）   按钮：查看物流，订单详情
     * 50--状态：已完成（买）   按钮：联系买家，订单详情
     * <p>
     * 售后
     * <p>
     * 45--状态：申请中      按钮：退货详情
     * 47--状态：已完成      按钮：退货详情
     * 48--状态：未通过      按钮：退货详情
     * 65--状态：申请中      按钮：退款详情
     * 67--状态：已完成      按钮：退款详情
     * 68--状态：未通过      按钮：退款详情
     *
     * @param status
     * @return
     */
    public static boolean canPay(int status) {
        // 立即支付
        return status == 10;
    }

    public static boolean isOrderFinished(int status) {
        // 查看物流
        // 查联系买家
        return ( status == 0 || status == 50);
    }
    public static boolean onTheWay(int status) {
        // 查看物流
        // 查联系买家
        return (/*status == 20 ||*/ status == 30 || status == 50);
    }

    public static boolean camBeDelete(int status) {
        // 删除订单
        return status == 0;// || status == 40 || status == 47 || status == 50 || status == 60 || status == 67;
    }

    public static boolean hasRejected(int status) {
        return status == 45 || status == 47 || status == 48 || status == 65 || status == 67 || status == 68;
    }

    public static int getWechartPay() {
        return wechartPay;
    }

    public static void setWechartPay(int wechartPay) {
        GloblaData.wechartPay = wechartPay;
    }

    public static void setSelectedCoupon(CouponInfo selectedCoupon) {
        GloblaData.selectedCoupon = selectedCoupon;
    }

    public static CouponInfo getSelectedCoupon() {
        return selectedCoupon;
    }

    public static void setEmojiList(List<String> emojiList) {
        GloblaData.emojiList = emojiList;
    }

    public static List<String> getEmojiList() {
        return emojiList;
    }
}
